import axios from 'axios'
import store from '@/store'
import { auth } from '@/utils/utils'

// 添加请求拦截器
axios.interceptors.request.use(
  function(config) {
    // 添加请求头
    // console.log(store.state.token)
    config.headers.Authorization = store.state.token
    // 在发送请求之前做些什么
    return config
  },
  function(error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  function(response) {
    const res = response.data
    // 如果响应的数据中有res.context.acl和res.context.jwt
    if (res.context) {
      if (res.context.acl) {
        // 将该账号的权限存起来 - 把auth_path组成一个数组 - 调用store中的方法进行整理储存
        const arr = auth(res.context.acl)
        store.commit('setAuth', arr)
        // 调用store的设置menu数据方法
        store.commit('setMenu', res.context.acl)
      }
      if (res.context.jwt) {
        // 调用store的设置token数据方法
        store.commit('setToken', res.context.jwt)
      }
    }
    // 对响应数据做点什么
    return res
  },
  function(error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

export default axios
